A typical content distribution network (CDN) includes multiple content servers which are distributed throughout a network (e.g., the Internet). A content source (e.g., a home site for a host domain) distributes content to the content servers in an attempt to (i) lower the load on the content source, and (ii) position the content closer to users of the content (e.g., Internet browsers which connect through Internet Service Providers). Accordingly, the users will tend to experience smoother delivery of the content and faster response times particularly when the content is large (e.g., a live video feed, a game, a very large file, etc.).
FIG. 1 shows an exemplary conventional CDN 20. The conventional CDN 20 includes multiple content servers 22-1, . . . , 22-27 (collectively, content servers 22), and connecting media 24 that connects the content servers 22 together. The connecting media 24 includes data communications devices 26 (e.g., switches, routers, bridges, hubs, etc.) and transmission media 28 (e.g., copper wire, fiber optic cable, etc.). The CDN 20 further includes a content distribution manager (CDM) 30, a content-originating device 32 (i.e., a content source), and content requesting devices 34-1, 34-2 (collectively, content requesting devices 34). The CDM 30 configures the content servers 22 to obtain content from the content-originating device 32 and to serve that content in response to requests for that content. Further details of how the CDM 30 configures the content servers 22 will now be described with reference to FIGS. 2 and 3.
Suppose that a content distribution company (i) owns and operates the CDM 30 and the content servers 22, and (ii) is in the business of controlling the content servers 22 so that the content servers 22 distribute content on behalf of the company's customers. To this end, the company may configure a subset of the content servers 22 to distribute content for a particular customer (e.g., the owner and operator of the content-originating device 32). FIG. 2 shows a subset 36 of content servers 22 for distributing content for the particular customer (the content servers 22 belonging to the subset 36 are in bold). As shown, the subset 36 of content servers 22 includes content servers 22-3, 22-4, 22-6, 22-9, 22-12, 22-13, 22-14, 22-15, 22-18, 22-19, 22-20, 22-22, 22-23 and 22-25.
To configure the subset 36 of content servers 22 to distribute content on behalf of the particular customer, a CDN administrator enters data describing the subset 36 into the CDM 30. The CDN administrator then directs the CDM 30 to communicate with the content servers 22 through the connecting media 24 to appropriately configure the content servers 22 (e.g., directs particular content servers 22 to obtain and serve content on behalf of the customer, and directs other content servers 22 not to obtain and serve content on behalf of the customer). In response, the content servers 22 communicate with each other to form hierarchical relationships which dictate how the content will flow from the content-originating device 32 to the content servers 22 which are configured to obtain and serve the content.
FIG. 3 shows, by way of example only, a distribution tree 40 representing the hierarchical relationships established between the content servers 22 of the subset 36. The distribution tree 40 has an inverted tree shape and pictorially illustrates how the subset 36 of content servers 22 carries content from the content-originating device 32, e.g., for access by the content requesting devices 34-1, 34-32 (also see FIG. 2). The tree 40 includes a single root node 42 and multiple non-root nodes 44. The root node 42 represents the content server 22-6 which is the first content server 22 to receive content from the content-originating device 32 and the only content server 22 to receive content directly from the content-originating device 32. The content servers 22-3, 22-4, 22-9 and 22-14 (represented by non-root nodes 44) are considered to be children of the content server 22-6 and obtain and serve the content from the content server 22-6. The content server 22-6 is considered to be the parent of the content servers 22-3, 22-4, 22-9 and 22-14. Content continues to flow further into the CDN 20 after it reaches the content servers 22-3, 22-4, 22-9 and 22-14. As shown in FIG. 3, the content flows from the content server 22-14 to the content servers 22-12, 22-13, 22-15, 22-23, and 22-25, and so on.
With reference back to FIG. 2, the CDN components which carry the content in accordance with the tree 40 of FIG. 3 are shown in bold in order to illustrate the flow of content through the CDN 20. As shown in FIG. 2, the requesting devices 34-1, 34-2 obtain the content directly from the content servers 22-18 and 22-19 both of which acquired the content directly from the content server 22-25. That is, the content server 22-18 obtained the content directly from the content server 22-25, and the content server 19 similarly obtained the content directly from the content server 22-25.
As just described above, the content server 22-25 obtained the content indirectly from the content-originating device 32 through the content servers 22-6 and 22-14. Accordingly, the load on the content-originating device 32 is lowered (i.e., the content-originating device does not have the burden of providing the content directly to the requesting devices 34-1, 34-2), and the response times from the perspectives of the requesting devices 34-1, 34-2 are faster (i.e., there is less network traffic/congestion and shorter distances to between the requesting devices 34-1, 34-2 and the content servers 22-18, 22-19 than between the requesting devices 34-1, 3-42 and the content originating-device 32).
It should be understood that the content servers 22 continuously communicate with each other (e.g., every few seconds) through the connecting media 24 in order to (i) maintain the hierarchical relationships existing between the content servers 22 (see the tree 40 of FIG. 3) and perhaps (ii) adjust these hierarchical relationships in response to changing network conditions, e.g., in response to particular content servers 22 becoming unavailable due to failure or becoming difficult to communicate with due to network traffic/congestion, in response to particular content servers 22 becoming overburdened, etc.
For example, suppose that the content server 22-25 fails due to a hardware problem (see FIGS. 2 and 3). Due to the constant communications among the content servers 22, the content servers 22-18, 22-19, 22-20 and 22-22, which previously had obtained content from the content server 22-25, can quickly detect the unavailability of the content server 22-25. In response to such detection, the content servers 22-18, 22-19, 22-20 and 22-22 can quickly form parent/child relationships with other content servers 22 (e.g., the content server 22-23) to maintain service (e.g., to continue to provide obtain and serve content to the requesting devices 34-1, 34-2). That is, the remaining content servers 22 can communicate with each other and adjust the formation of the tree 40. Accordingly, the CDN 20 includes a fault tolerance feature that enables the CDN 20 to sustain service to requesting devices 34 even in the event of an undesired event (e.g., failure of a content server 22, network traffic, etc.).